home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
csim
/
source.lha
/
source
/
C++SIM
/
Examples
/
Breaks.cc
< prev
next >
Wrap
C/C++ Source or Header
|
1993-06-14
|
853b
|
59 lines
/*
* Copyright (C) 1993
*
* Department of Computing Science,
* The University,
* Newcastle upon Tyne,
* UK.
*/
#ifndef BREAKS_H_
#include "Breaks.h"
#endif
#ifndef MACHINE_H_
#include "Machine.h"
#endif
#ifndef QUEUE_H_
#include "Queue.h"
#endif
extern Machine* M;
extern Queue JobQ;
Breaks::Breaks ()
{
RepairTime = new UniformStream(1, 10);
OperativeTime = new UniformStream(20, 1000);
interrupted_service = false;
}
Breaks::~Breaks ()
{
delete RepairTime;
delete OperativeTime;
}
void Breaks::Body ()
{
for(;;)
{
Hold((*OperativeTime)());
M->Broken();
M->Cancel();
if(!JobQ.IsEmpty())
interrupted_service = true;
Hold((*RepairTime)());
M->Fixed();
if (interrupted_service)
M->ActivateAt(M->ServiceTime() + CurrentTime());
else
M->ActivateAt();
interrupted_service = false;
}
}